home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok59.lha
/
AmokEd_V1.02b
/
txt
/
doc
/
ApplProg.dok
next >
Wrap
Text File
|
1993-08-15
|
7KB
|
168 lines
---------------------------------------------------------------------------
A m o k E d
===================
Version 1.02
01 Okt 1991
AEd_Appl.dok
---------------------------------------------------------------------------
Dokumentation zu AmokEd-Applikations-Programmierung
---------------------------------------------------
Eine Applikation für AmokEd zu programmieren ist ganz leicht:
· Schreiben Sie Ihr Programm, daß es alle Funktionen beinhaltet, die
Sie haben möchten.
Wenn das Programm befehlsgesteuert ist, tun Sie sich bei der nun
folgenden Arbeit leicht.
· Ergänzen Sie Ihr Programm um eine ARexx-Schnittstelle.
Sie können nun testen, ob das Programm mit dem Rexx-Host zusammen-
arbeitet (am einfachsten über die Arexx-Funtion `trace').
· Das Programm sollte beim CLI-Aufruf als ersten Parameter den Namen
des AmokEd-Ports, mit dem es kommunizieren soll, erwarten.
Wenn das Programm einen eigenen öffentlichen Port hat, so können
sie erreichen, daß Ihr Applikation nur einmal im Speicher ist, auch
wenn sie von mehreren AmokEds genutzt wird. Wie das im Einzelnen
abläuft, ist aus dem Programm ApplDemo ersichtlich.
· Setzen Sie das Feld RexxMessage.node.node.name auf den Typ.
Sie finden die Typen in EdApplDefs.mod bereits vordefiniert. Anhand
des Typs erkennt AmokEd, daß die Nachricht von einer Applikation
kommt und welches Format sie hat.
· Die erste Nachricht die von der Applikation an AmokEd geschickt
wird, sollte die Anmeldung mit dem `APPLADD'-Befehl sein.
Überprüfen Sie den Return-Code!!
Nur wenn RexxMsg.result1 = 0, können Sie Sicher sein, daß alles
ordnungsgemäß abgelaufen ist.
· Der Befehl "CloseDown" signalisiert Ihrem Programm, das es für
AmokEd "gestorben" ist. Dieser Befehl wird beim Beenden des letzten
Textes von AmokEd an alle registrierten Applikationen geschickt;
oder auf Befehl des Anwenders an einzelne.
Befehlsübersicht
----------------
Von der Applikation aus können Sie alle Befehle benutzen, die Ihnen
für ARexx-Scripts und innerhalb von AmokEd zur Verfügung stehen.
Zusätzlich gibt es einige Befehle, die nur für Applikationen erlaubt
sind. Eine genaue Beschreibung finden sie weiter unten.
ApplAdd - meldet eine neue Applikation bei AmokEd an (siehe oben)
XPing - setzt XPing-Feld
XPong - springt an Position n des XPing-Feldes
XClrPing - löscht das XPing-Feld
Message-Typen
-------------
Die Parameter einer Applikation können an AmokEd auf zwei
verschiedene Weisen übergeben werden. Um unterscheiden zu können,
welches der beiden Formate vorliegt, muß das Feld
RexxMsg.nod.node.name den entsprechenden Typbezeichner enthalten.
Diese beiden Typen sind in EdApplDefs vordefiniert.
AEd0: RexxMsg.args[0] enthält Pointer auf einen String, der von AEd
wie ein gewöhnlicher Kommando-String von ARexx behandelt wird.
D.h. er wird ganz normal durch den Parser geschickt.
Wenn der übergebene String nicht nur aus alphanumerischen
Zeichen und Underscores '_' besteht, sollten Sie nicht den
String selbst übergeben, sondern einen ARexx-Argstring. (Siehe
hierzu auch Programm ApplDemo.)
AEd1: Dieser Typ erleichter die Kommunikation zwischen der Applikation
und AmokEd erheblich, da nicht extra ein String zusammengesetzt
werden muß, den AmokEd dann wieder parset. Die Argumente werden
gleich einzeln übergeben. Das macht nicht nur die Applikationen
kürzer, sondern beschleunigt auch die Abarbeitung.
Mit diesem Typ können alle Befehle benutzt werden, die AmokEd
versteht. Sie müssen nur beachten, daß die Argumente der
normalen und der Rexx-Befehle IMMER als StringPtr interpretiert
werden.
RexxMsg.arg[0] enthält einen StringPtr. Der referenzierte
String, der wird darf jedoch nur und genau ein gültiges Kommando
enthalten (ohne Argumente), da dieser String als unverändertes
Ganzes zum Vergleich mit der Liste der gülitgen Kommandos
benutzt wird
Die folgenden RexxMsg.args[]-Felder enthalten die Argumente des
auszuführende Befehls. Bei den normalen und den Rexx-Befehlen
sind das immer StringPtr.
Sie können im Anschluß daran noch weitere Befehle mit
Argumenten übergeben, sofern alle Argumente in die noch zur
Verfügung stehenden RexxMsg.args[]-Felder passen. Bedenken Sie
jedoch, daß in args[eAD.TextSlot] der Bezugs-Text eingetragen
wird. Es stehen daher eAD.numAMArgs args[]-Felder zur Verfügung.
WICHTIG:
Das erste, nicht mehr benutzte args[]-Feld MUSS auf NIL gesetzt
werden! Dies trifft natürlich nicht zu, wenn Sie alle
eAD.numAMArgs Felder benutzen.
Ein kleines Beispiel:
Wir haben 3 Befehle (Anzahl der Agumente in Klammern):
foo (2), bar (0) und foobar (1).
Dann könnten wir folgende RexxMsg schicken:
args[0] := ADR("foo");
args[1] := fooarg1;
args[2] := fooarg2;
args[3] := ADR("bar");
args[4] := ADR("foobar");
args[5] := foobar_arg;
args[6] := NIL;
args[eAD.TextSlot] := Text; (* Text wurde übergeben *)
Die Applikations-Befehle
------------------------
ADDAPPL <name> <port> Meldet eine Applikation bei AmokEd an. Sie ist
anschließend für den Benutzen unter <name>
anprechbar. <port> ist der Name des öffentlichen
Ports, unter dem die Applikation erreichbar ist.
<name> StringPtr
<port> StringPtr
XPING <adr> Teilt AmokEd mit, an welcher Adresse sich die
Struktur eAD.XPingPong befindet, die die Marken
für XPong enthält.
Zur Zeit kann AmokEd je Text nur ein XPingPong-
Feld verwalten.
Aus Gründen der Aufwärtskompatibilität sollte
der Speicher dieser Struktur PUBLIC sein.
<adr> eAD.XPingPongPtr
XPong <num> Veranlaßt AmokEd, an die Position und in die
Zeile zu springen, die an <num> in die Struktur
XPingPong eingetragen ist.
Sollte diese Position nicht mehr gültig sein,
erhalten die einen entsprechenden Fehler-Code.
<num> LONGINT
ClrXPing Veranlaßt AmokEd, den Verweis auf die Struktur
XPingPong des Textes zu entfernen.
Jetzt kann der Inhalt der Struktur geändert oder
der zugehörige Speicher freigegeben werden.
"Besitzt" Ihre Applikation eine Message von dem
AmokEd (es können ja mehrere gleichzeitg
laufen), zu dem der Text gehört, so kann die
Applikation sie Struktur auch ändern, ohne
vorher ClrXPing aufzurufen. Sobald die Message
repleied wurde, darf die Struktur nicht mehr
verändert werden!